package com.honeycomb.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.honeycomb.db.entity.TagInfo;
import com.honeycomb.service.BaseService;
import com.honeycomb.service.ITagService;
import com.honeycomb.utils.HoneyCombColumnIndicator;
import com.honeycomb.utils.HoneyCombTools;
import com.honeycomb.utils.SystemConstants;
import com.honeycomb.vo.BaseVO;
import com.honeycomb.vo.ResultDto;
import com.honeycomb.vo.TaginfoVO;

public class TagServiceImpl extends BaseService implements ITagService {

	/**
	 * @author ZhongJiang
	 * 
	 * @function 查找所有标签Service层
	 * 
	 */
	@Override
	public ResultDto<TaginfoVO> findHotTagList() {
		logger.info("Hello - TagServiceImpl - findHotTagList...");
		TaginfoVO tagInfoVO = null;
		List<TagInfo> tagInfoList = null;
		TagInfo tagInfo = null;
		ResultDto<TaginfoVO> resultDtoQueryHotTagList = new ResultDto<TaginfoVO>();
		try {
			tagInfoList = this.getiTaginfoDao().findHotTagList();
			for(int i=0;i<tagInfoList.size();i++) {
				tagInfo = tagInfoList.get(i);
				tagInfoVO = new TaginfoVO();
				tagInfoVO.setTagId(tagInfo.getTagId());
				tagInfoVO.setTagName(tagInfo.getTagName());
				tagInfoVO.setTagCnt(tagInfo.getTagCnt());
				tagInfoVO.setTagSeq(tagInfo.getTagSeq());
				resultDtoQueryHotTagList.addToResultList(tagInfoVO);
			}
			resultDtoQueryHotTagList.setSuccess(true);
			return resultDtoQueryHotTagList;
		} catch (Exception e) {
			e.printStackTrace();
			resultDtoQueryHotTagList.setSuccess(false);
			return resultDtoQueryHotTagList;
		}
	}

	/**
	 * @author ZhongJiang
	 * @function 添加标签List(如果存在则返回,不存在则先添加再返回)
	 * @date 2012-11-05
	 * @param tagValueStr 标签字符串（用“#”分隔开的）
	 */
	@Override
	public ResultDto<TaginfoVO> addTags(String tagValueStr) {
		logger.info("Hello - TagServiceImpl - addTags...");
		
		ResultDto<TaginfoVO> resultDtoAddTags = new ResultDto<TaginfoVO>();
		List<TaginfoVO> taginfoVOList = new ArrayList<TaginfoVO>();
		TaginfoVO tagInfoVO = null;
		TagInfo tagInfo = null;

		try {
			String[] tagValueArr = HoneyCombTools.splitStr(tagValueStr, "#", SystemConstants.TAG_ADD_DEFAULT_MAX_CNT);
			logger.info("+++++++++tagValueCnt++++++++++++++"+tagValueArr.length);
			if(tagValueStr.equals("") || tagValueArr.length == 0) {
				resultDtoAddTags.setSuccess(false);
			}else {
				for(int i=0;i<tagValueArr.length;i++) {
					logger.info("tagValue:"+tagValueArr[i]);
					tagInfo = this.getiTaginfoDao().findByTagName(tagValueArr[i]);
					//如果已存在
					if(tagInfo != null) {
						tagInfo.setTagCnt(tagInfo.getTagCnt()+1);
						this.getiTaginfoDao().update(tagInfo);
						tagInfoVO = new TaginfoVO();
						tagInfoVO.setTagId(tagInfo.getTagId());
						tagInfoVO.setTagName(tagInfo.getTagName());
						tagInfoVO.setTagCnt(tagInfo.getTagCnt());
						tagInfoVO.setTagSeq(tagInfo.getTagSeq());
						resultDtoAddTags.addToResultList(tagInfoVO);
					}else { //如果不存在则需要添加
						TagInfo tagInfoNew = new TagInfo();
						tagInfoNew.setTagId(HoneyCombTools.getUUIDString());
						tagInfoNew.setTagName(tagValueArr[i]);
						tagInfoNew.setTagCnt(SystemConstants.TAG_CREATE_CNT);
						tagInfoNew.setTagSeq(SystemConstants.TAG_CREATE_SEQ);
						this.getiTaginfoDao().add(tagInfoNew);
						
						tagInfoVO = new TaginfoVO();
						tagInfoVO.setTagId(tagInfoNew.getTagId());
						tagInfoVO.setTagName(tagInfoNew.getTagName());
						tagInfoVO.setTagCnt(tagInfoNew.getTagCnt());
						tagInfoVO.setTagSeq(tagInfoNew.getTagSeq());
						resultDtoAddTags.addToResultList(tagInfoVO);
					}
				}
				resultDtoAddTags.setSuccess(true);
			}
			return resultDtoAddTags;
		} catch (Exception e) {
			e.printStackTrace();
			resultDtoAddTags.setSuccess(false);
			return resultDtoAddTags;
		}
	}
	
}












